#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int main()
{
    umask(0);
    int fd1 = open("bite", O_WRONLY | O_CREAT, 0666);
    if(fd1 < 0)
    {
        perror("fopen");
        return 1;
    }
    const char* msg = "i like linux!";
    write(fd1, msg, strlen(msg));
    close(fd1);
    int fd2 = open("bite", O_RDONLY);
    if(fd2 < 0)
    {
        perror("fopen");
        return 1;
    }
    char ch;
	while (1){
		ssize_t s = read(fd2, &ch, 1);
		if (s <= 0){
			break;
		}
		write(1, &ch, 1); //向文件描述符为1的文件写入数据，即向显示器写入数据
	}
    printf("\n");
	close(fd2);
    return 0;
}
//int main()
//{
//    FILE* fp = fopen("bite", "w+"); //读写w+
//    if(fp == NULL)
//    {
//        perror("fopen");
//        return 1;
//    }
//    const char* str = "linux so easy!";
//    char buffer[40];
//    fwrite(str, strlen(str)+1, 1, fp);
//    fseek(fp, 0, SEEK_SET);
//    fread(buffer, strlen(str)+1, 1, fp);
//    printf("%s\n", buffer);
//    fclose(fp);
//    return 0;
//}
////int main()
//{
//    //c 
//    printf("hello printf\n");
//    fputs("hello fputs\n", stdout);
//    //sys  
//    write(1, "hello write\n", 12);
//    fork();
//    return 0;
//}
//

//int main()
//{
//    umask(0);
//    close(1);
//    int fd = open("log.txt", O_WRONLY | O_CREAT, 0666);
//    if(fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//    dup2(fd, 1);
//    printf("hello printf\n");
//    fprintf(stdout, "hello fprintf\n");
//    return 0;
//}
//


//int main()
//{
//    printf("hello printf\n");
//    perror("perror");
//
//    fprintf(stdout, "stdout:hello fprintf\n");
//    fprintf(stderr, "stderr:hello fprintf\n");
//    return 0;
//}
////int main()
//{
//    umask(0);
//    close(0);
//    int fd = open("log.txt", O_RDONLY | O_CREAT, 0666);
//    if(fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//    char str[40];
//    while(scanf("%s", str) != EOF)
//    {
//        printf("%s\n", str);
//    }
//    close(fd);
//    return 0;
//}
//
//

//int main()
//{
//    umask(0);
//    close(1);
//    int fd = open("log.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
//    if(fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//    printf("hello Linux\n"); 
//    printf("hello Linux\n");
//    printf("hello Linux\n");
//    printf("hello Linux\n");
//    fflush(stdout);
//    close(fd);
//    return 0;
//}
//
//


//int main()
//{
//    int fd = open("log.txt", O_RDONLY);
//    if(fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//    char ch;
//    while(1)
//    {
//        ssize_t s = read(fd, &ch, 1);
//        if(s <= 0)
//        {
//            break;
//        }
//        write(1, &ch, 1);   //向文件描述符为1的文件写入数据，即向显示器写入数据
//    }
//    close(fd);
//    return 0;
//}
//

//int main()
//{
//    int fd = open("log.txt", O_WRONLY | O_CREAT, 0666);
//    if(fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//    const char* msg = "hello syscall\n";
//    for(int i = 0; i < 5; i++)
//    {
//        write(fd, msg, strlen(msg));
//    }
//    close(fd);
//    return 0;
//}
//
//
//

//#include<stdio.h>
//#include<sys/stat.h>
//#include<sys/types.h>
//#include<fcntl.h>
//int main()
//{
//    int fd = open("test.txt", O_RDONLY);
//    printf("%d\n", fd);
//    return 0;
//}
//


//int main()
//{
//    umask(0);
//    close(0);
//    close(2);
//    int fd1 = open("log1.txt", O_RDONLY | O_CREAT, 0666);
//    int fd2 = open("log2.txt", O_RDONLY | O_CREAT, 0666); 
//    int fd3 = open("log3.txt", O_RDONLY | O_CREAT, 0666);
//    int fd4 = open("log4.txt", O_RDONLY | O_CREAT, 0666);
//    int fd5 = open("log5.txt", O_RDONLY | O_CREAT, 0666);
//    printf("fd1:%d\n", fd1);
//    printf("fd2:%d\n", fd2);
//    printf("fd3:%d\n", fd3);
//    printf("fd4:%d\n", fd4);
//    printf("fd5:%d\n", fd5);
//    return 0;
//}
//
//
//#include<stdio.h>
//int main()
//{
//    printf("hello stdin\n", stdout);
//    printf("hello stdout\n", stdout);
//    printf("hello stderr\n", stdout);
//    return 0;
//}
//





//#include<stdio.h>
//int main()
//{
//    FILE* fp = fopen("log.txt", "r");
//    if(fp == NULL)
//    {
//        perror("fopen");
//        return 1;
//    }
//    char buffer[64];
//    for(int i = 0; i < 5; i++)
//    {
//        fgets(buffer, sizeof(buffer), fp);
//        printf("%s", buffer);
//    }
//    fclose(fp);
//    return 0;
//}




//#include<stdio.h>
//#include<unistd.h>
//int main()
//{
//    FILE* fp = fopen("log.txt", "w");
//    if(fp == NULL)
//    {
//        perror("fopen");
//        return 1;
//    }
//    int count = 5;
//    while(count)
//    {
//        fputs("hello world\n", fp);
//        count--;
//    }
//    fclose(fp);
//    sleep(25);
//    return 0;
//}
